import {
  KeywordModel
} from '../../models/keyword.js'
const keywordModel = new KeywordModel()

import {
  paginationBev
} from '../behaviors/pagination.js'

Component({
  /**
   * 组件的属性列表
   */
  behaviors: [paginationBev],
  properties: {
    // 从组件外向组件内发送通知：
   
    more:{
      type:String,
      // 组件的值有改变以后执行的监听函数
      observer: '_load_more'
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    historyWords: [],
    hotWords: [],
    dataArray: [],
    searching: false,
    total:0,
    q: '',
    // 是否正在发送请求
    loading:false,
    loadingCenter:false,
    noneResult:false,
    loadingmore:false
  },
  attached() {
    const historyWords = keywordModel.getHistory();
    const hotWords = keywordModel.getHot();
    this.setData({
      historyWords: historyWords
    });
    hotWords.then(res => {
      this.setData({
        hotWords: res.hot
      })
    })

  },
  /**
   * 组件的方法列表
   */
  methods: {
    _load_more(){
      console.log(123)
      if(!this.data.q){
        return
      }
      // 这个length表示当前已经从服务器取回的数据,就是下一次应该的start起始位置
      const length=this.data.dataArray.length
      // 每次只发送一次请求
      if(this.data.loading){
        return 
      }
      this.data.loading = true
      this.setData({
        loadingmore:true
      })
      keywordModel.search(length,this.data.q).then(res=>{  
         
        // 老数据:
        // this.data.dataArray()
        // 新数据:
        // res.books
        // 合并:
        const tempArray=this.data.dataArray.concat(res.books)
        // 把老的更新成新的
        this.setData({
          dataArray: tempArray,
          loading:false,
          loadingmore:false
        })
      })
      
    },    
    onCancel(event) {
      this.triggerEvent('cancel', {}, {})
    },
    onDelete(event) {
      this.setData({
        searching: false
      });
      this.initialize()
    },
    initialize(){
      this.setData({
        dataArray:[],
        noneResult:false
      })
      // this.data.dataArray=[]
      this.data.total=null
      console.log('清空')
    },
    onConfirm(event) {
      this._showLoadingCenter()
      this.setData({
        searching: true
      })
      // 清空之前的data
      this.initialize()
      // 第一个是value是input内输入的值，第二个是自定义事件携带有标签的文本
      const query = event.detail.value || event.detail.text
      // 返回一个promise
      keywordModel.search(0, query)
        .then(res => {
          console.log(res.total)
          if(res.total==0){
            this.setData({
              noneResult:true
            })
          }
          this.setData({
            dataArray: res.books,
            q: query
          })
          // 改写一下：等有结果了才放入搜索结果
          keywordModel.addToHistory(query);
          this._hideLoadingCenter();
        })
    },
    _showLoadingCenter(){
      this.setData({
        loadingCenter:true
      })
    },
    _hideLoadingCenter(){
      this.setData({
        loadingCenter: false
      })
    }
    /**
     * 页面上拉触底事件的处理函数
     */

  }
})